package com.dly.hope.service;

import com.dly.hope.model.ro.LoginRo;
import com.dly.hope.model.ro.PromiseRo;
import com.dly.hope.model.ro.RegisterRo;
import com.dly.hope.model.vo.*;
import com.dly.hope.pageUtils.Page;
import com.dly.hope.pageUtils.PageRo;

import java.util.List;

/**
 * @author linyu.dai
 * @project myserve
 * @description 用户账号Service
 * @creat 2022/8/26 14:39:14
 */
public interface UserAccountService {

    /**
     * @Author linyu.dai
     * @Description 用户登入
     * @Date 2022/8/27 19:38
     * @Param [ro]
     * @return com.dly.hope.model.vo.LoginVo
     */
    LoginVo login(LoginRo ro);

    /**
     * @Author linyu.dai
     * @Description 用户注册
     * @Date 2022/8/28 10:45
     * @Param [registerRo]
     * @return void
     */
    void register(RegisterRo registerRo);

    /**
     * @Author linyu.dai
     * @Description 发送验证码
     * @Date 2022/8/28 19:50
     * @Param []
     * @return void
     */
    void sendCode(String email);

    /**
     * @Author linyu.dai
     * @Description 获取在线的人
     * @Date 2022/11/7 15:45
     * @Param []
     * @return java.util.Set<java.lang.Object>
     */
    OnLineVo getOnLinePeople();

    /**
     * @Author linyu.dai
     * @Description 获取所有的用户信息
     * @Date 2022/11/18 11:15
     * @Param []
     * @return java.util.List<com.dly.hope.model.vo.UserVo>
     */
    Page<UserShow> getAll(PageRo pageRo);

    /**
     * 获取单个用户信息
     * @param userId
     * @return
     */
    UserVo getUserAccount(String userId);

    /**
     * 设置头像
     * @param fileId
     */
    void setAvatar(String userId,String fileId);

    /**
     * 修改密码
     * @param registerRo
     */
    void modifyPassword(RegisterRo registerRo);

    /**
     * 设置名字
     * @param userId
     * @param nowName
     */
    void setName(String userId,String nowName);

    /**
     * 强制下线
     */
    void forcedExit(List<String> userIds);

    /**
     * 强制下线
     */
    void deleteUser(List<String> userIds);

    void setPromise(PromiseRo promiseRo, String userId);

    UserPromiseVo getPromise(String userId);
}
